package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.budget.RCBudgetDivision;
import com.shrct.businessprocess.budget.RCCost4RemainItem;
import com.shrct.businessprocess.diagnose.IDiagnoseAcceptor;
import com.shrct.businessprocess.product.RCBrand;
import com.shrct.businessprocess.product.RCProductMetaType;
import com.shrct.businessprocess.product.RCProductServiceTracer;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.IHasServicePurchase;
import com.shrct.businessprocess.purchase.RCBaseProductPurchaseBudget;
import com.shrct.businessprocess.purchase.RCHasPurchaseBudget;
import com.shrct.businessprocess.purchase.RCServiceProductPurchaseRequest;
import com.shrct.businessprocess.purchase.impl.RCProductPurchaseBudgetImpl;
import com.shrct.businessprocess.purchase.proxy.RCProductPurchaseBudgetProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import java.util.Collection;

@EntityImplementation(implementBy = RCProductPurchaseBudgetImpl.class)
public interface RCProductPurchaseBudget extends RCBaseProductPurchaseBudget, IHasServicePurchase {
  public abstract RCProjectMoney getServiceContractPrice();
  
  public abstract RCProductPurchaseBudget setServiceContractPrice(final RCProjectMoney serviceContractPrice);
  
  public abstract Double getServiceContractTaxRate();
  
  public abstract RCProductPurchaseBudget setServiceContractTaxRate(final Double serviceContractTaxRate);
  
  public abstract RCProjectMoney getServiceNetPrice();
  
  public abstract RCProductPurchaseBudget setServiceNetPrice(final RCProjectMoney serviceNetPrice);
  
  public abstract Double getServiceNetTaxRate();
  
  public abstract RCProductPurchaseBudget setServiceNetTaxRate(final Double serviceNetTaxRate);
  
  public abstract RCProjectMoney getProductContractPrice();
  
  public abstract RCProductPurchaseBudget setProductContractPrice(final RCProjectMoney productContractPrice);
  
  public abstract Double getProductContractTaxRate();
  
  public abstract RCProductPurchaseBudget setProductContractTaxRate(final Double productContractTaxRate);
  
  public abstract RCProjectMoney getProductNetPrice();
  
  public abstract RCProductPurchaseBudget setProductNetPrice(final RCProjectMoney productNetPrice);
  
  public abstract Double getProductNetTaxRate();
  
  public abstract RCProductPurchaseBudget setProductNetTaxRate(final Double productNetTaxRate);
  
  public abstract RCBrand getProductCategory();
  
  public abstract RCProductPurchaseBudget setProductCategory(final RCBrand productCategory);
  
  public abstract String getSortKey();
  
  public abstract String getName();
  
  public abstract RCProjectMoney getContractPrice();
  
  public abstract Double getContractTaxRate();
  
  public abstract RCProjectMoney getNetPrice();
  
  public abstract Double getNetTaxRate();
  
  public abstract String getTypeId();
  
  public abstract RCProductMetaType getProductMetaType();
  
  public abstract Boolean seemsFinished();
  
  public abstract Collection<RCBudgetDivision> getBudgetDivisions();
  
  public abstract Iterable<RCCost4RemainItem> getRCCost4RemainItems();
  
  public abstract RCProjectMoney getContractInvoiceTax();
  
  public abstract RCProjectMoney getNetInvoiceTax();
  
  public abstract RCProjectMoney getInvoiceTax();
  
  public abstract RCServiceProductPurchaseRequest createServiceProductPurchaseRequest();
  
  public abstract Iterable<RCServiceProductPurchaseRequest> getServicePurchaseRequests();
  
  public abstract Iterable<RCProductServiceTracer> getRCProductServiceTracer();
  
  public abstract RCHasPurchaseBudget asBudget();
  
  public abstract void diagnose(final IDiagnoseAcceptor acceptor);
  
  public abstract RCProductPurchaseBudgetProxy toProxy();
}
